home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / contsens / Readme < prev    next >
Text File  |  1991-01-31  |  5KB  |  114 lines

  1. version 2.3:
  2. ------------
  3. The Pascal  programs have been translated to C, using the program p2c;
  4. separate compilation is used.
  5. Subsequently, the abstract syntax handling has been rewritten to use
  6. tmc. Error messages are now sent to stderr; if no type errors
  7. are found the modified abstract syntax goes to stdout. The correct exitcode 
  8. is delivered.
  9. Programs:
  10. csf    does the less severe context-sensitive checks, on the parser output
  11.     If -w is given as argument, warnings are treated as errors.
  12. sk    does the severe context-sensitive checks, on the output of the
  13.     macro-expander
  14.  
  15. Overview of files:
  16. handlefull.ht    } Fed to tm for access procs. for full language: fscan, print, 
  17.       .ct    } new. Use fullconf.t (wantdefs)
  18. handlekex.ht    } Fed to tm for access procs. for extension of kernel language
  19.      .ct    } (in kex.ds): fscan, print, new, app. Use kexconf.t
  20. handcom.h:     access for primitives in ds; inserted in xxx.ht
  21.        .c:     inserted in xxx.ct
  22. kex.ds:        data structure for communication from macro expander to sk
  23. check.ds.h:     type defs. for implementation type, name-type list, errorlist, 
  24.             nminstrec.
  25. check.var.h:    global vars. used in contsens.c and size.c
  26. check.afuncs.h:    build instances of the implementation type
  27.             .c
  28. errorenv.h:    generate/print error messages; operations on name-type lists
  29.         .c
  30. unification.h:    substitution on implementation types so that they represent the
  31.        .c:    same same/have nonempty intersection, applying subst., tests
  32. contsens.h:    binding/scoping checks, less severe type checks, binding/type
  33.     .c:    dependant simple data structure transformations
  34. mainf.c:    invokes the previous (with or without warnings)
  35. size.h:        severe type checks, i.e. size checks + rewriting cons/indexing
  36.     .c:        to kernel Glass (depends on types)
  37. mainsk.c:    invokes the previous
  38. p2c.h:        }needed because these programs have been translated from Pascal
  39. p2clib.c    }
  40.  
  41. version 2.2:
  42. ------------
  43.  
  44. The check if tuples have exactly the right size is implemented: the 
  45. program sk. This should be applied to the output of the macro-expander,
  46. and delivers errormessages or abstract syntax fit for argument to semantic
  47. functions (remaining : and index expressions have been rewritten).
  48.  
  49. version 2.1:
  50. -----------
  51.  
  52. Simple context-sensistive checks have been implemented: ensuring that a type
  53. is correct after writing out typenamings, and that atomic typenames and type 
  54. variables are only used where allowed, checking that no names are defined more
  55. than once. 
  56. Some checks result in warnings (less severe than errors, in the message 
  57. indicated by '(W)').
  58.  
  59. The clarity of type error messages has been considerably improved (I hope),
  60. by e.g. printing the piece of Glass text for which a wrong type was discovered.
  61.  
  62. To be able to run on machines that do not know separate compilation, a flag 
  63. 'SEPCOMP' is introduced in the makefile. If set to zero (the default when you
  64. receive this package) all source files are merged into one big file first by 
  65. cpp, and 'external' functions, and 'argv' and 'argc' (for reading an option) 
  66. are not used. 
  67. A drawback is that I do not know how to give a correct exit code to csfe/csfw
  68. without 'external' declarations, so that no exit code is given.
  69. SEPCOMP=1: 'external', 'argv' and 'argc' are used. So csfe/csfw give correct
  70. exit code. csfe can be given an optional argument '-w'; 'csfe -w' is equivalent
  71. to csfw.
  72.  
  73. Executables:
  74.  
  75. csfe: do context-sensitive checks, give errors only.
  76. csfw, csfe -w: treat warning like they were errors.
  77.  
  78. Yet to be implemented, so you'll have to take care of this for the moment 
  79. yourself:
  80. - use ':' only for lists that are broken into pieces by the macro-expander
  81.   (':' not accepted in the kernel).
  82. - in using 't^e' types, be sure that 'e' has the right size (since the full 
  83.   Glass type check can not know the value of 'e' yet)
  84.  
  85. version 2.0:
  86. -----------
  87.  
  88. Not all tasks have been implemented yet, but at least the type-correctness
  89. of a full GLASS description is checked. The other tasks will be implemented
  90. in the near future.
  91.  
  92. Because of the yet unimplemented tasks, the user for the moment will have to
  93. take care of the following things himself:
  94. - if using typenamings, be sure that after the defined typename has been 
  95.   replaced by its definition there results a correct type. (e.g. do not use
  96.   't => B' with 'TYPE t = INT')
  97. - in a DEF that ends up in the kernel (i.e. one without formal parameters)
  98.   use a typename only where one is allowed in the kernel (so e.g. not as 
  99.   parametertype, and not with a functiontype as definition).
  100. - don't define names more than once: in a list of 'elt's, in the parameters
  101.   of a DEF/MAC, in the '-:' declarations in one type.
  102. - use ':' only for lists that are broken into pieces by the macro-expanded
  103.   (':' not accepted in the kernel).
  104. - in using 't^e' types, be sure that 'e' has the right size (since the full 
  105.   Glass type check can not know the value of 'e' yet)
  106.    
  107. The executable program is called 'csf'. It takes input from stdin, and produces
  108. output on stdout. Input: an instance of '[def]', as produced by the parser; 
  109. output: if errors occur errormessages, otherwise the input modified such
  110. that it is fit as input for the macro-expander.
  111. csf can be activated with the option '-w'. In that case some more severe tests
  112. are done (possibly generating warnings), which are treated like errors. If csf 
  113. is used without '-w' these warnings are ignored.
  114.